/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.entidade.registroimovel;

import br.com.deployment.entidade.registroimovel.Titulo;
import br.com.deployment.entidade.registroimovel.Imovel;
import br.com.deployment.entidade.humana.Pessoa;
import br.com.deployment.entidade.arquivo.Anexo;
import br.com.deployment.entidade.acesso.Usuario;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;

/**
 *
 * @author roniere
 */
@Entity
public class Transferencia implements Serializable {

    
    @Id
    @SequenceGenerator(name = "seq_transferir", sequenceName = "seq_transferir")
    @GeneratedValue(generator = "seq_transferir", strategy = GenerationType.SEQUENCE)
    private int id;
    
    @NotNull(message="Erro, imovel não pode ser vazio")
    @OneToOne(fetch= FetchType.EAGER)
    private Imovel imovel;
    
    @Temporal(TemporalType.DATE)
    private Date datacad;
    
    
    @JoinTable(name="transferencia_transmitente")
    @OneToMany( fetch= FetchType.EAGER)
    private List<Pessoa> transmitente;
    
    @JoinTable(name="transferencia_adquirente")
    @OneToMany( fetch= FetchType.EAGER )
    @NotNull(message="O Adquirente é obrigatório")
    private List<Pessoa> adquirente;
    
    @NotNull
    @OneToOne
    private Titulo titulo;
    
    @OneToOne
    private Usuario usuario;
    
    @Column
    private String formaTitulo;
    
    @OneToMany(fetch= FetchType.LAZY)
    private List<Anexo> anexo;
    
    @Column(precision = 2)
    private float valor;
    
    @Column(length=50000)
    private String texto;
    
    public Transferencia() {
    }
    
    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

    public Date getDatacad() {
        return datacad;
    }

    public void setDatacad(Date datacad) {
        this.datacad = datacad;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public List<Pessoa> getAdquirente() {
        return adquirente;
    }

    public void setAdquirente(List<Pessoa> adquirente) {
        this.adquirente = adquirente;
    }

    public List<Anexo> getAnexo() {
        return anexo;
    }

    public void setAnexo(List<Anexo> anexo) {
        this.anexo = anexo;
    }

    public Date getDataCadastro() {
        return datacad;
    }

    public void setDataCadastro(Date datacad) {
        this.datacad = datacad;
    }

    public String getFormaTitulo() {
        return formaTitulo;
    }

    public void setFormaTitulo(String formaTitulo) {
        this.formaTitulo = formaTitulo;
    }

    public Imovel getImovel() {
        return imovel;
    }

    public void setImovel(Imovel imovel) {
        this.imovel = imovel;
    }

    public Titulo getTitulo() {
        return titulo;
    }

    public void setTitulo(Titulo titulo) {
        this.titulo = titulo;
    }

    public List<Pessoa> getTransmitente() {
        return transmitente;
    }

    public void setTransmitente(List<Pessoa> transmitente) {
        this.transmitente = transmitente;
    }

    public float getValor() {
        return valor;
    }

    public void setValor(float valor) {
        this.valor = valor;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Transferencia other = (Transferencia) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 23 * hash + this.id;
        return hash;
    }

    @Override
    public String toString() {
        return "Transferencia{" + "id=" + id + ", imovel=" + imovel + ", datacad=" + datacad + ", transmitente=" + transmitente + ", adquirente=" + adquirente + ", titulo=" + titulo + ", formaTitulo=" + formaTitulo + ", anexo=" + anexo + ", valor=" + valor + '}';
    }
}
